home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d942.lha / WBMenu / WBMenu.asm < prev    next >
Assembly Source File  |  1993-12-20  |  4KB  |  280 lines

  1.  move.l #0,a3
  2.  move.l a0,d6
  3.  move.l d0,d7
  4. OpenDos
  5.  lea Dos(PC),a1
  6.  moveq #0,d0
  7.  move.l 4,a6
  8.  jsr -552(a6)
  9.  tst.l d0
  10.  beq Fine
  11.  move.l d0,a4
  12.  lea Dos(PC),a1
  13.  moveq #37,d0
  14.  move.l 4,a6
  15.  jsr -552(a6)
  16.  tst.l d0
  17.  bne Continue
  18.  bsr Not_OK
  19.  bra CloseDos
  20. Continue
  21.  move.l d0,a4
  22.  move.l a4,a6
  23. Parse
  24.  lea Temp(PC),a0
  25.  move.l a0,d1
  26.  lea List(PC),a0
  27.  move.l a0,d2
  28.  move.l #0,d3
  29.  jsr -798(a6)
  30.  tst.l d0
  31.  beq No_Args
  32.  lea Arg(PC),a0
  33.  move.l d0,(a0)
  34.  lea List(PC),a0
  35.  tst.l 32(a0)
  36.  beq GoOnAgain
  37.  move.l #1,16(a0)
  38. GoOnAgain
  39.  tst.l 28(a0)
  40.  beq GoOnNow
  41.  move.l #1,8(a0)
  42. GoOnNow
  43.  tst.l (a0)
  44.  beq No_Args
  45.  tst.l 4(a0)
  46.  beq No_Args
  47.  move.l (a0),a0
  48. SetEnd
  49.  tst.b (a0)+
  50.  bne SetEnd
  51.  move.b #0,-1(a0)
  52.  lea List(PC),a0
  53.  move.l 4(a0),a0
  54. SetEnd2
  55.  tst.b (a0)+
  56.  bne SetEnd2
  57.  move.b #0,-1(a0)
  58.  lea List(PC),a0
  59.  move.l (a0),d6
  60.  move.l 4(a0),d7 
  61. OpenWork
  62.  lea Work(PC),a1
  63.  moveq #37,d0
  64.  move.l 4,a6
  65.  jsr -552(a6)
  66.  tst.l d0
  67.  bne Cont1
  68.  bsr Not_OK
  69.  bra CloseArgs
  70. Cont1
  71.  move.l d0,a5
  72. GetMSG
  73.  move.l 4,a6
  74.  jsr -666(a6)
  75.  tst.l d0
  76.  bne Cont2
  77.  bsr Not_OK
  78.  bra CloseWork
  79. Cont2
  80.  move.l d0,d5
  81. PutMenu
  82.  moveq #0,d0
  83.  move.l d7,a0
  84.  move.l d5,a1
  85.  move.l #0,a2
  86.  move.l a5,a6
  87.  jsr -72(a6)
  88.  tst.l d0
  89.  bne Cont3
  90.  bsr Not_OK
  91.  bra CloseMSG
  92. Cont3
  93.  move.l d0,d4
  94. WaitMSG
  95.  move.l d5,a0
  96.  move.l 4,a6
  97.  jsr -384(a6)
  98.  move.l d5,a0
  99.  jsr -372(a6)
  100.  move.l d0,a1
  101.  jsr -378(a6)
  102. CloseWindow
  103.  move.l a4,a6
  104.  move.l a3,d1
  105.  tst.l d1
  106.  beq LookEnd
  107.  move.l #0,a3
  108.  jsr -36(a6)
  109. LookEnd
  110.  lea List(PC),a0
  111.  tst.l 28(a0)
  112.  bne Execute
  113.  btst #6,$bfe001
  114.  beq DelMenu
  115. Execute
  116.  tst.l 20(a0)
  117.  bne WaitMSG 
  118.  tst.l 24(a0)
  119.  beq JumpIn
  120.  move.l #0,12(a0)
  121.  move.l #1,16(a0)
  122.  bra Exe2
  123. JumpIn
  124.  lea List(PC),a0
  125.  tst.l 32(a0)
  126.  beq UsualOutput
  127.  move.l 32(a0),a0
  128.  bra DoOpen
  129. UsualOutput 
  130.  lea Output(PC),a0
  131. DoOpen
  132.  move.l a0,d1
  133.  move.l #1006,d2
  134.  jsr -30(a6)
  135.  move.l d0,a3
  136. Exe2
  137.  lea List(PC),a0
  138.  tst.l 36(a0)
  139.  bne GetOutput
  140.  lea Called(PC),a0
  141.  move.l a0,d1
  142.  move.l #1005,d2
  143.  jsr -30(a6)
  144.  tst.l d0
  145.  beq GetOutput 
  146.  lea CallW(PC),a0
  147.  move.l d0,(a0)
  148.  move.l d0,d1
  149.  lea CallTx(PC),a0
  150.  move.l a0,d2
  151.  move.l #CallW-CallTx,d3
  152.  lea List(PC),a0
  153.  tst.l 40(a0)
  154.  beq Schreib
  155.  move.l 40(a0),d2
  156.  move.l 40(a0),a0
  157.  clr.l d3
  158. Gloop
  159.  addq #1,d3
  160.  tst.b (a0)+
  161.  bne Gloop
  162. Schreib
  163.  jsr -48(a6)
  164. GetOutput
  165.  move.l d6,d1
  166.  move.l #0,d2
  167.  move.l a3,d3
  168.  move.l a4,a6
  169.  jsr -222(a6)
  170.  move.l CallW(PC),d1
  171.  tst.l d1
  172.  beq GoWeiter
  173.  jsr -36(a6)
  174. GoWeiter
  175.  lea List(PC),a0
  176.  tst.l 8(a0)
  177.  beq WaitMSG
  178.  tst.l 12(a0)
  179.  beq ByeBye
  180.  move.l a4,a6
  181.  tst.l 12(a0)
  182.  beq WindowAway
  183.  move.l #175,d1
  184.  jsr -198(a6)
  185.  bra WindowAway
  186. ByeBye
  187.  lea List(PC),a0
  188.  tst.l 16(a0)
  189.  bne WindowAway
  190.  move.l a3,d1
  191.  lea ByeText(PC),a0
  192.  move.l a0,d2
  193.  moveq #Dos-ByeText,d3
  194.  jsr -48(a6)
  195.  move.l a3,d1
  196.  lea Read(PC),a0
  197.  move.l a0,d2
  198.  moveq #1,d3
  199.  jsr -42(a6)
  200. WindowAway
  201.  move.l a4,a6
  202.  move.l a3,d1
  203.  tst.l d1
  204.  beq DelMenu
  205.  jsr -36(a6)
  206.  move.l #0,a3
  207. DelMenu
  208.  move.l d4,a0
  209.  move.l a5,a6
  210.  jsr -78(a6)
  211. CloseMSG
  212.  move.l d5,a0
  213.  move.l 4,a6
  214.  jsr -672(a6)
  215. CloseWork
  216.  move.l a5,a1
  217.  move.l 4,a6
  218.  jsr -414(a6)
  219. CloseArgs
  220.  move.l Arg(PC),d1
  221.  tst.l d1
  222.  beq CloseDos
  223.  move.l a4,a6
  224.  jsr -858(a6)
  225. CloseDos
  226.  move.l a4,a1
  227.  move.l 4,a6
  228.  jsr -414(a6)
  229. Fine
  230.  moveq #0,d0
  231.  rts
  232. Not_OK
  233.  move.l a4,a6
  234.  jsr -60(a6)
  235.  tst.l d0
  236.  beq Sorry
  237.  move.l d0,d1
  238.  lea Sys_Err(PC),a0
  239.  move.l a0,d2
  240.  moveq #Sys_ErrE-Sys_Err,d3
  241.  jsr -48(a6)
  242. Sorry
  243.  rts
  244. No_Args
  245.  move.l a4,a6
  246.  jsr -60(a6)
  247.  tst.l d0
  248.  beq Sorry2
  249.  move.l d0,d1
  250.  lea Args_Err(PC),a0
  251.  move.l a0,d2
  252.  moveq #Args_ErrE-Args_Err,d3
  253.  jsr -48(a6)
  254. Sorry2
  255.  bra CloseArgs
  256.  
  257. Called        dc.b "RAW:0/11/640/21/WBMenu - Information",0
  258. CallTx        dc.b "Executing program ..."
  259.         even
  260. CallW        dc.l 0
  261. Output         dc.b "CON:0/100/640/156/WBMenu - Output/auto/close",0
  262. ByeText         dc.b 13,10,"Press ENTER : "
  263. Read         dc.b 0
  264. Dos         dc.b "dos.library",0
  265. Work         dc.b "workbench.library",0
  266.         even
  267. List         ds.l 12
  268. Temp         dc.b "EXECUTABLE,TITLE,ONCE/S,WAIT/S,NOASK/S,NOCALL/S,QUIET/S,NOVANISH/S,REDIR/K,NOINFO/S,TEXT/K",0
  269. Version        dc.b "$VER: WBMenu_V3.4 (03.09.93) by TS",0
  270.         even
  271. Arg         dc.l 0
  272. Args_Err     dc.b "Bad args",13,10
  273. Args_ErrE
  274. Sys_Err     dc.b "Internal Error - (Workbench not loaded,"
  275.          dc.b " bad kickstart version etc.)",13,10
  276. Sys_ErrE
  277.         even
  278. Dest         dc.l 0
  279.  end
  280.